package org.example.command;

/**
 * 定义一个命令接口,然后有三个命令类分别实现它: 打开命令类 编辑命令类 保存命令类
 * 有个编辑器接口,里面有三个方法: 打开() 编辑() 保存(); 现在市面存在很多编辑器实现它
 * 现在我的打开命令需要用A编辑器打开, 则在命令类引入A编辑器后调用命令类的execute方法
 */
public class CommonTest {
    public static void main(String[] args) {
        Command htmlOpen = new OpenCommand(new Html5Editor());
        Command htmlEdit = new EditCommand(new Html5Editor());
        Command htmlSave = new SaveCommand(new Html5Editor());

        Command markDownOpen = new OpenCommand(new MarkDownEditor());
        Command markDownEdit = new EditCommand(new MarkDownEditor());
        Command markDownSave = new SaveCommand(new MarkDownEditor());

        EditorFlow editorFlow = new EditorFlow();
        editorFlow.addCommands(htmlOpen);
        editorFlow.addCommands(htmlEdit);
        editorFlow.addCommands(htmlSave);
        editorFlow.addCommands(markDownOpen);
        editorFlow.addCommands(markDownEdit);
        editorFlow.addCommands(markDownSave);

        editorFlow.batchExecute();

    }
}
